package cn.seqdata.cxf.repos;

import java.util.List;
import java.util.stream.Collectors;

import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;

import cn.seqdata.jpa.JpaType;
import cn.seqdata.jpa.lookup.LookupJpaType;

/** 针对JpaType的cxf接口 */
public interface JaxrsTypeRepository<T extends JpaType> extends JaxrsRepository<T, Integer> {
	@GET
	@Path("/{id}")
	default T findOne(@PathParam("id") Integer id) {
		return getRepository().findOne(id);
	}

	@GET
	@Path("/all")
	default List<T> findAll() {
		return getRepository().findAll();
	}

	@DELETE
	@Path("/{id}")
	default void delete(@PathParam("id") Integer id) {
		getRepository().delete(id);
	}

	@DELETE
	@Path("/all")
	default void deleteAll() {
		getRepository().deleteAll();
	}

	@GET
	@Path("/lookup")
	default List<LookupJpaType> lookup() {
		return getRepository().findAll()
			.stream()
			.map(LookupJpaType::new)
			.collect(Collectors.toList());
	}
}
